export function deepClone(data) {
  //先判断类型
  function judgeType(data) {
    const toString = Object.prototype.toString;
    const map = {
      "[object Boolean]": "boolean",
      "[object Number]": "number",
      "[object String]": "string",
      "[object Function]": "function",
      "[object Array]": "array",
      "[object Date]": "date",
      "[object RegExp]": "regExp",
      "[object Undefined]": "undefined",
      "[object Null]": "null",
      "[object Object]": "object",
    };
    if (obj instanceof Element) {
      return "element";
    }
    return map[toString.call(obj)];
  }

  const type = judgeType(data);
  let obj;
  if (type === "array") {
    obj = [];
  } else if (type === "object") {
    obj = {};
  } else {
    return data;
  }
  if (type === "array") {
    for (let i = 0, len = data.length; i < len; i++) {
      obj.push(this.deepClone(data[i]));
    }
  } else if (type === "object") {
    for (const key in data) {
      obj[key] = this.deepClone(data[key]);
    }
  }
  return obj;
}
